package daily.oct;

public class lc3370 {
    /*
    采用暴力算法，实现比较简单。由于规定了输入范围为1-1000，所以得到了循环上限为1023.不然比较难办。
     */
    public int smallestNumber(int n) {
        //已知n的取值范围为1到1000，比1000大的最小符合条件数为1023，即上限为1023
        for (int i = n; i <= 1023; i++) {
            String binary = Integer.toBinaryString(i);
            if (check(binary)) {//binary中只由1组成，符合条件
                return Integer.parseInt(binary, 2);
            }
        }
        return 0;
    }

    boolean check(String s){
        for(char c : s.toCharArray()){
            if (c != '1'){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        lc3370 lc = new lc3370();
        System.out.println(lc.smallestNumber(5));
        System.out.println(lc.smallestNumber(10));
        System.out.println(lc.smallestNumber(3));
        System.out.println(lc.smallestNumber(514));
    }
}
